package jwr.basic;

public class J14_StaticMember {

	public static void main(String[] args) {
		// static 멤버변수 다루기
		Car car1 = new Car("BMW", "rx100", 1, 2);
		//car1 객체가 생성되면 정적 변수 total에 1을 증가
		Car car2 = new Car("Honda", "t320", 2, 4);
		//car2 객체가 생성되면 정적 변수 total에 1을 증가
		System.out.println(car1.getCounter());
		System.out.println(car2.getCounter());
		System.out.println(Car.total);
	}

}

// 차량정보를 다루는 클래스 : Car

class Car{
	private String maker, model;
	private int doors, counter;
	//멤버변수 maker, model, doors, counter 등은 new 연산자로 객체를 생성할 때 변수가 만들어 짐
	public static int total;	//정적멤버변수
	// 하지만, 정적변수 total은 프로그램이 실행될 때 미리 변수가 만들어 짐 
	//생성자 정의
	public Car() {
		++total; //Car객체가 생설될 때마다 total 증가
	}
	// 모든 멤버변수를 초기화하는 생성자 정의
	public Car(String maker, String model, int counter, int doors) {
		this.maker = maker;
		this.model = model;
		this.counter = counter;
		this.doors = doors;
		++total; //Car객체가 생설될 때마다 total 증가
	}
	//일부 멤버변수를 초기화하는 생성자 정의
	//문짝이 4개이고 카운터가 0인 차량 들록시 사용
	public Car(String maker, String model) {
		this(maker, model,0,4);
		//기존의 만들어진 생성자를 간편하게 호출하기 위해 this라는 접두사를 사용
		/*this.maker = maker;
		this.model = model;*/
		++total; //Car객체가 생설될 때마다 total 증가
	}
	//setter getter 메서드 정의
	

	
	//toString 메서드 재정의
	@Override
	public String toString() {
		String result ="제조사 : "+maker;
		result +="\n모델명 : "+model;
		result +="\n문짝수 : "+doors;
		result +="\n차량번호 : "+counter;
		return result;
	}
	public String getMaker() {
		return maker;
	}
	public void setMaker(String maker) {
		this.maker = maker;
	}
	public String getModel() {
		return model;
	}
	public void setModel(String model) {
		this.model = model;
	}
	public int getDoors() {
		return doors;
	}
	public void setDoors(int doors) {
		this.doors = doors;
	}
	public int getCounter() {
		return counter;
	}
	public void setCounter(int counter) {
		this.counter = counter;
	}
	public static int getTotal() {
		return total;
	}
	public static void setTotal(int total) {
		Car.total = total;
	}
	
}
